home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
graphics
/
pictex
/
errorbars.tex
< prev
next >
Wrap
Text File
|
1992-08-26
|
3KB
|
118 lines
%
% TeX macros to plot error bars with the PicTeX macros.
%
% These macros are largely derived from the examples in the back
% of the PiCTeX manual.
%
% To plot with a mark at each data point, simply say
%
% \plotWith mark M at x1 y1 x2 y2 .... xN yN /
%
% where "M" is a mark character {e.g. $\bullet$}
%
% To include error bars in the plot, say:
%
% \plotWithErrorBars mark M at
% x1 y1 e1
% x2 y2 e2 .... xN yN eN
% /
%
% The line-breaking isn't needed. Marks are placed on the graph
% at (xi, yi) for each data point. Vertical error bars are drawn
% from (xi, yi + ei) to (xi, yi - ei).
%
% The cross-bar at the top and bottom of the error bars is normally
% 5 pts, but can be changed by setting the \crossbarlength dimen.
%
%
% Dirk Grunwald Apr 20 1988
%
%
\newdimen\dyposition
\newdimen\crossbarlength
\crossbarlength=5pt
\newdimen\lastPlotX
\newdimen\lastPlotY
\newdimen\tmpPlotX
\newdimen\tmpPlotY
%
%
\def\plotErrorBar#1 #2 #3 #4{%
\message{ Plot #4 at #1 #2 }%
\put {#4} at {#1} {#2}
\dyposition=\Ydistance{#3}
\put{%
\vbox{%
\hsize=\crossbarlength%
\hrule height \linethickness%
\vskip -.5\linethickness%
\centerline{\vrule width \linethickness height 2\dyposition}%
\nointerlineskip%
\vskip -.5\linethickness%
\hrule height \linethickness}%
} at {#1} {#2} }
%
\def\plotWithErrorBars mark #1 at #2 #3 #4 {%
\def\errorBarMark{#1}%
%
% plot first point
%
\plotErrorBar {#2} {#3} {#4} {\errorBarMark}
\lastPlotX=\Xdistance{#2}%
\lastPlotY=\Ydistance{#3}%
\futurelet\nextcharacter\plotErrorBarLoop}
%
\def\plotErrorBarLoop{%
\if/\nextcharacter%
\def\plotErrorBarAction{\plotErrorBarFinish}%
\else%
\def\plotErrorBarAction{\plotErrorBarContinued}%
\fi%
\plotErrorBarAction}
%
\def\plotErrorBarFinish/ {}
%
\def\plotErrorBarContinued#1 #2 #3 {%
\plotErrorBar {#1} {#2} {#3} {\errorBarMark}%
\tmpPlotX = \Xdistance{#1}%
\tmpPlotY = \Ydistance{#2}%
\setdimensionmode%
\plot {\lastPlotX} {\lastPlotY} {\tmpPlotX} {\tmpPlotY} /
\setcoordinatemode%
\lastPlotX = \tmpPlotX%
\lastPlotY = \tmpPlotY%
\futurelet\nextcharacter\plotErrorBarLoop}
%
\def\plotWith mark #1 at #2 #3 {%
\def\plotWithMark{#1}%
%
% plot first point
%
\message{Plot {\plotWithMark} at #2 #3}%
\put {\plotWithMark} at {#2} {#3}
\lastPlotX=\Xdistance{#2}%
\lastPlotY=\Ydistance{#3}%
\futurelet\nextcharacter\plotWithLoop}
%
\def\plotWithLoop{%
\if/\nextcharacter%
\def\plotWithAction{\plotWithFinish}%
\else%
\def\plotWithAction{\plotWithContinued}%
\fi%
\plotWithAction}
%
\def\plotWithFinish/ {}
%
\def\plotWithContinued#1 #2 {%
\message{ Plot {\plotWithMark} at #1 #2}%
\put {\plotWithMark} at {#1} {#2}
\tmpPlotX = \Xdistance{#1}%
\tmpPlotY = \Ydistance{#2}%
\setdimensionmode%
\plot {\lastPlotX} {\lastPlotY} {\tmpPlotX} {\tmpPlotY} /
\setcoordinatemode%
\lastPlotX = \tmpPlotX%
\lastPlotY = \tmpPlotY%
\futurelet\nextcharacter\plotWithLoop}